@echo off
setlocal enabledelayedexpansion

set NODE_VERSION=20.13.1
set INSTALL_DIR=D:\develop
set NODE_FILENAME=node-v%NODE_VERSION%-win-x64
set DOWNLOAD_URL=https://nodejs.org/dist/v%NODE_VERSION%/%NODE_FILENAME%.zip
set NODE_HOME=%INSTALL_DIR%\%NODE_FILENAME%
set NODE_GLOBAL=%NODE_HOME%\node_global
set NODE_CACHE=%NODE_HOME%\node_cache

:: 1. 下载 zip 包
echo 正在下载 Node.js %NODE_VERSION%...
powershell -Command "Invoke-WebRequest -Uri %DOWNLOAD_URL% -OutFile %~dp0%NODE_FILENAME%.zip"

:: 2. 解压 zip 包
echo 正在解压 Node.js 压缩包...
powershell -Command "Expand-Archive -Path %~dp0%NODE_FILENAME%.zip -DestinationPath %INSTALL_DIR%"

:: 3. 创建 node_global 和 node_cache 文件夹
echo 创建 node_global 和 node_cache 文件夹...
mkdir %NODE_GLOBAL%
mkdir %NODE_CACHE%

:: 4. 配置环境变量
echo 配置环境变量...
setx PATH "%PATH%;%NODE_HOME%;%NODE_GLOBAL%" /M

:: 5. 配置 npm 下载和缓存路径为家目录
echo 配置 npm 下载和缓存路径为家目录...
%NODE_HOME%\node.exe %NODE_HOME%\node_modules\npm\bin\npm-cli.js config set prefix "%NODE_GLOBAL%"
%NODE_HOME%\node.exe %NODE_HOME%\node_modules\npm\bin\npm-cli.js config set cache "%NODE_CACHE%"

:: 6. 删除已下载的压缩包
echo 删除已下载的压缩包...
del %~dp0%NODE_FILENAME%.zip

echo Node.js %NODE_VERSION% 已成功安装和配置。

pause